package sxd.biz;

import java.util.List;

import javax.annotation.Resource;

import org.beetl.sql.core.SQLManager;
import org.beetl.sql.core.engine.PageQuery;
import org.springframework.stereotype.Service;

import sxd.dao.DeptDao;
import sxd.dao.UserDao;
import sxd.pojo.Dept;
import sxd.pojo.User;
import sxd.pojo.User.Gender;

/**
 * service demo  所有的都写到一起了
 * @author darren
 * @date 2016年9月8日 下午12:34:47
*/
@Service
public class SxdBiz {
	@Resource
	private SQLManager dao;//所有类都可以动过 sqlmanager来进行增删改查操作
	@Resource
	private DeptDao deptDao;
	@Resource
	private UserDao userDao;
	
	/**
	 * 插入部门
	 * @param detp
	 * @throws Exception
	 */
	public void addDept(Dept detp) throws Exception{
		deptDao.insert(detp);
	}
	/**
	 * 更新部门
	 * @param detp
	 * @throws Exception
	 */
	public void updateDept(Dept dept)throws Exception{
		deptDao.updateTemplateById(dept);//根据dept对象的主键为条件 对有值的字段进行更新
		//deptDao.updateById(detp);//根据dept对象的主键为条件 对所有字段进行更新 dept中字段为null的 数据库也会更新成null 
	}
	
	/**
	 * 删除部门
	 * @param id
	 * @throws Exception
	 */
	public void deleteDept(Integer id) throws Exception{
		deptDao.deleteById(id);
	}
	/**
	 * 获取所有部门
	 * @return
	 */
	public List<Dept> getDeptList(){
		return deptDao.all();
	}
	
	/**
	 * 插入用户
	 * @param user
	 * @throws Exception
	 */
	public void addUser(User user) throws Exception{
		userDao.insert(user);
	}
	/**
	 * 更新用户
	 * @param user
	 * @throws Exception
	 */
	public void updateUser(User user) throws Exception{
		userDao.updateTemplateById(user);
	}
	/**
	 * 删除用户
	 * @param user
	 * @throws Exception
	 */
	public void deleteUser(Integer uid) throws Exception{
		userDao.deleteById( uid);
		//如果是复合组建 
//		Pojo pojo = new Pojo();
//		pojo.setID1(id1);
//		pojo.setID2(id2);
//		pojoDao.delteById(pojo);
	}
	
	
	public List<String> getUserName(Gender gender){
		return userDao.queryUserNameByGender(gender);
	}
	
	/**
	 * 查询用户分页
	 * @param pageSize
	 * @param pageNumber
	 * @return
	 */
	public PageQuery getUserPage(Integer pageSize,Integer pageNumber){
		PageQuery page = new PageQuery();
		page.setOrderBy("id desc");
		page.setPageNumber(pageNumber);
		page.setPageSize(pageSize);
		userDao.queryUser(page);
		return page;
	}
	
	/**
	 * 查询部门下的员工数
	 * @param did
	 * @return
	 */
	public Integer getUserCountByDept(Integer did){
		return userDao.queryUserCountByDept(did);
	}
}
